<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表白墙</title>
</head>
<body>
     <!-- 通过内部样式style标签，引入CSS样式 -->
     <style>
        *{
            /* 首先先去除浏览器样式 */
            /* 将 内外边距设置为0,设置盒子模型为向内挤压 */
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .containner{
            width: 100%;
        }
        h3{
            /* 文本居中 */
            text-align: center;
            /* 上下边距为 20px，左右边距为0 */
            padding: 20px 0;
            font-size: 24px;
        }

        p{
            text-align: center;
            color: #666;
            padding: 10px 0;
        }

        .row{
            width: 400px;
            height: 50px;
            /* 上下外边距为零，左右外边距自适应 */
            /* 就是元素水平居中操作 */
            margin: 0 auto;
            /* 弹性布局 */
            display: flex;
            /* 水平居中 */
            justify-content: center;
            /* 垂直居中 */
            align-items: center;
        }

        .row span{
            width: 60px;
            font-size: 17px;
        }
        .row input{
            width: 300px;
            height: 40px;
            line-height: 40px;
            font-size: 20px;
            text-indent: 0.5em;
            outline: none;
        }

        .row #submit{
            width: 360px;
            height: 40px;
            font-size: 20px;
            line-height: 40px;
            margin: 0 auto;
            color: white;
            background-color: orange;
            border: none;
            border-radius: 15px;
            outline: none;
        }
        /* 当鼠标点击按钮的时候，会改变按钮颜色 */
        .row #submit:active{
            background-color: grey;
        }
    </style>
    <div class="container">
        <h3>表白墙</h3>
        <p>输入后点击提交，会将信息显示在表格中</p>
        <br>
        <div class="row">
            <span>谁: </span>
            <input type="text">
        </div>
        <div class="row">
            <span>对谁: </span>
            <input type="text">
        </div>
        <div class="row">
            <span>说什么: </span>
            <input type="text">
        </div>
        <div class="row">
            <button id="submit">提交</button>
        </div>
    </div>
        <!-- 使用 ajax 的前提：引入 jQuery 依赖 -->
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>

        <script>
            // 下面我们要进行的操作：加入 ajax 的代码，此处要加入的逻辑在两个部分。
            // 点击按钮提交的时候，ajax要构造收据发送给服务器。
            // 页面加载的时候，我们从服务器获取消息列表，并在页面上直接显示。
    
            function getMessages(){
                $.ajax({
                    type: 'get',
                    url: 'message',
                    success: function(body){
                        let container = document.querySelector('.container');
                        //依次来获取数组中的每个元素
                        for(let message of body){
                            // 创建一个 div 标签 来存放一条记录（消息）
                            let newDiv = document.createElement('div');
                            // 将 元素中的关键信息进行提取，然后构造成一个字符串
                            newDiv.innerHTML = message.from + "对" + message.to +"说：" + message.message;
                            // 添加 CSS 样式。
                            newDiv.className = 'row';
                            // 将新建节点，挂在 container 这个节点下面
                            container.appendChild(newDiv);
                        }
                    }
                });
            }
            // 加上函数调用：等于就是说，一旦访问页面，就会去访问服务器，把里面的数据显示出来。
            getMessages();
    
            let submitBtn = document.querySelector('#submit');
            submitBtn.onclick = function(){
                // 1、获取 3个input 文本框中的数据
                let inputs = document.querySelectorAll('input');
                let from = inputs[0].value;
                let to = inputs[1].value;
                let say = inputs[2].value;
                if(from == ''|| to == '' || say == ''){
                    // 用户填写的数据，并不完整。所以不提交。
                    return;
                }
                // 2、生成一个新的 div，内容就是 三个 input 文本框的内容拼接
                // 再把这个 元素，挂在DOM树上。
                let newDiv = document.createElement('div');
                newDiv.innerHTML = from + "对" + to +"说：" + say;
                newDiv.className = 'row';
                // 将新建节点，挂在 container 这个节点下面
                let container = document.querySelector('.container');
                //3、清空之前输入框的内容
                container.appendChild(newDiv);
                for(let i = 0;i < inputs.length;i++){
                    inputs[i].value = '';
                }
    
                // 4、把当前获取到的输入框的内容，构造成一个 HTTP POST 请求。
                // 通过  ajax 发送给 服务器
                let body = {
                    // 为了方便大家区分，我给 key 加上了双引号。
                    // 其实在 json 格式的数据中，key 一般都是加上双引号的。
                    // 但是 key带不带双引号，都是字符串类型的。
                    // 正常都是要带的，但是JS为了让大家敲起来更方便，允许省略双引号。
                    // 注意！如果key带有一些特殊符号: 比如空格这种，就必须要加上 双引号！！！
                    "from": from,
                    "to": to,
                    "message": say
                };
                $.ajax({
                    type: "post",//指定方法
                    url: "message",//填入 服务器代码的 Servlet Path。【就是注释中的路径，去掉/】
                    contentType: "application/json;charset=utf8",
                    data: JSON.stringify(body),
                    success: function(body){
                        alert("消息提交成功！");
                    },
                    error: function(){
                        alert("消息提交失败！");
                    }
                });
             }
        </script>   
</body>
</html>